import { sysProfile, sysUser } from "@/api/user";
import { otherRoutes, constantRoutes, resetRouter } from "@/router/index";
import router from "@/router";
export default {
  namespaced: true,
  state: {
    // 持久化：1：值修改了存储到浏览器 2：初始值读取浏览器存储
    // vuex持久化插件 vuex-persistedstate
    // 1:下载安装  npm i vuex-persistedstate -f
    // 2:导入，在store/index.js导入  import persistedstate from 'vuex-persistedstate'
    // 3:配制使用  plugins:[persistedstate({paths:['模块名.字段名']})]
    // token: localStorage.getItem('token') || ''
    token: "",
    userInfo: {},
  },
  mutations: {
    setToken(state, value) {
      state.token = value;
      // localStorage.setItem('token', value)
      // localStorage.setItem(key,value)
      // localStorage.getItem(key)
      // localStorage.removeItem(key)
    },
    setUserInfo(state, value) {
      state.userInfo = value;
    },
    // 删除token与用户信息
    logout(state) {
      state.token = "";
      state.userInfo = {};
      //重置路由
      resetRouter();
    },
  },
  getters: {},
  actions: {
    // 获取用户信息
    async getUserInfo(store) {
      const res = await sysProfile();
      const res2 = await sysUser(res.data.userId);
      store.commit("setUserInfo", { ...res.data, ...res2.data });
      console.log("权限点数据", res.data.roles.menus);
      // 将用户信息中的权限点数据与动态路由做匹配，将匹配后的数据添加到路由配制中
      // 用户信息权限点数据 ["employees","settings"]
      // 动态路由(otherRoutes)：[{meta:{code:'employees'}},{meta:{code:'settings'}},,{meta:{code:'approvals'}}]
      const newArr = otherRoutes.filter((item) => {
        return res.data.roles.menus.includes(item.meta.code);
      });
      newArr.push({ path: "*", redirect: "/404", hidden: true });
      // 将匹配到的路由添加到路由配制中
      // router.addRoutes(需要添加的路由配制) 通过该方法做路由添加
      router.addRoutes(newArr);
      // this.$router.options.routes的值不会因为addRoutes添加而动态更新
      // 手动更新
      router.options.routes = [...constantRoutes, ...newArr];
      console.log("匹配到的数组", newArr);
    },
  },
};
